package com.wulis.provider.authority.service;

import java.util.List;

import com.wulis.common.support.BaseService;
import com.wulis.provider.authority.model.dto.InsertMenuDto;
import com.wulis.provider.authority.model.dto.QueryMenuTreeDto;
import com.wulis.provider.authority.model.dto.UpdateMenuDto;
import com.wulis.provider.authority.model.entity.Menu;
import com.wulis.provider.authority.model.vo.InsertMenuVo;
import com.wulis.provider.authority.model.vo.QueryMenuTreeVo;
import com.wulis.provider.authority.model.vo.QueryMenuVo;

import lombok.NonNull;

/**
 * 权限管理:菜单表 Service
 *
 * @author WuliBao
 * @date 2020-04-17
 */
public interface MenuService extends BaseService<Menu> {
    
    /**
     * WEB:查询菜单树
     * 
     * @param queryMenuTreeDto queryMenuTreeDto
     * @return List
     */
    List<QueryMenuTreeVo> queryMenuTree(@NonNull QueryMenuTreeDto queryMenuTreeDto);
    
    /**
     * WEB:查询菜单列表（当前登录用户）
     *
     * @return List<MenuVo>
     */
    List<QueryMenuTreeVo> queryMenuList();
    
    /**
     * WEB:查询菜单
     *
     * @param id id
     * @return QueryMenuVo
     */
    QueryMenuVo queryMenu(@NonNull Long id);
    
    /**
     * WEB:新增菜单
     * 
     * @param insertMenuDto insertMenuDto
     * @return InsertMenuVo
     */
    InsertMenuVo insertMenu(@NonNull InsertMenuDto insertMenuDto);
    
    /**
     * WEB:修改菜单
     * 
     * @param updateMenuDto updateMenuDto
     * @return Integer
     */
    Integer updateMenu(@NonNull UpdateMenuDto updateMenuDto);
    
    /**
     * WEB:删除菜单
     * 
     * @param menuId menuId
     * @return Integer
     */
    Integer deleteMenu(@NonNull Long menuId);
}
